import java.util.Scanner;

public class demo05 {
//    问题描述
//    回文串，是一种特殊的字符串，它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。
//    现在给你一个串，它不一定是回文的，请你计算最少的交换次数使得该串变成一个完美的回文串。
//    交换的定义是：交换两个相邻的字符
//    例如mamad
//    第一次交换 ad : mamda
//    第二次交换 md : madma
//    第三次交换 ma : madam (回文！完美！)
//    输入格式
//    第一行是一个整数N，表示接下来的字符串的长度(N <= 8000)
//    第二行是一个字符串，长度为N.只包含小写字母
//    输出格式
//    如果可能，输出最少的交换次数。
//    否则输出Impossible
//    样例输入：5
//            mamad
//    样例输出：3

    public static boolean check(StringBuilder sb){
        int[] arr=new int[26];
        for (int i = 0; i < sb.length(); i++) {
            arr[sb.charAt(i)-'a']++;
        }
        int count=0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]%2==1){
                count++;
                if(count>1){
                    return false;
                }
            }
        }
        return true;
    }
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int num=sc.nextInt();
        StringBuilder sb=new StringBuilder(sc.next());
        if(!check(sb)){
            System.out.println("Impossible");
            return;
        }else{
            int sum=0;
            while(sb.length()>2) {
                char first = sb.charAt(0);
                int index = sb.lastIndexOf(first + "");
                if (index!=0){
                    sum+=sb.length()-1-index;
                    sb.deleteCharAt(index);
                    sb.deleteCharAt(0);
                }else{
                    sum+=sb.length()/2;
                    sb.deleteCharAt(0);
                }
            }
            System.out.println(sum);
        }
    }
}
